package xx.iverson.file_manager.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import xx.iverson.file_manager.entity.CategoryLevel2;

import java.util.List;

/**
 * CategoryLevel2Mapper接口
 * 描述：二级分类数据访问层接口，提供对二级分类信息的增删改查操作
 * on 2025/9/18-上午9:06
 *
 * @author weijx
 */
@Mapper
public interface CategoryLevel2Mapper {

    /**
     * 查询所有二级分类
     *
     * @return 二级分类列表
     */
    List<CategoryLevel2> selectAllLevel2Categories();

    /**
     * 根据ID查询二级分类
     *
     * @param id 二级分类ID
     * @return 二级分类对象
     */
    CategoryLevel2 selectLevel2CategoryById(Integer id);

    /**
     * 根据一级分类ID查询对应的二级分类列表
     *
     * @param level1Id 一级分类ID
     * @return 二级分类列表
     */
    List<CategoryLevel2> selectLevel2ByLevel1Id(Integer level1Id); // 根据一级分类查询二级分类

    /**
     * 根据名称和一级分类ID查询二级分类
     *
     * @param name 二级分类名称
     * @param level1Id 一级分类ID
     * @return 二级分类对象
     */
    CategoryLevel2 selectLevel2CategoryByNameAndLevel1(
            @Param("name") String name,
            @Param("level1Id") Integer level1Id
    );

    /**
     * 插入二级分类
     *
     * @param category 二级分类对象
     * @return 受影响的行数
     */
    int insertLevel2Category(CategoryLevel2 category);

    /**
     * 更新二级分类
     *
     * @param category 二级分类对象
     * @return 受影响的行数
     */
    int updateLevel2Category(CategoryLevel2 category);

    /**
     * 删除二级分类
     *
     * @param id 二级分类ID
     * @return 受影响的行数
     */
    int deleteLevel2Category(Integer id);

    /**
     * 统计指定二级分类下的文件数量
     *
     * @param categoryId 二级分类ID
     * @return 文件数量
     */
    int countFilesByLevel2CategoryId(Integer categoryId);
}

